home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PPESCR17.ZIP / PPE-SCR.PPE (.txt) < prev   
PCBoard Programming Language Executable  |  1994-11-01  |  19KB  |  1,261 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Boolean  BOOLEAN011
  30.     Boolean  BOOLEAN012
  31.     Boolean  BOOLEAN013
  32.     Boolean  BOOLEAN014
  33.     Boolean  BOOLEAN015
  34.     Boolean  BOOLEAN016
  35.     Boolean  BOOLEAN017
  36.     Boolean  BOOLEAN018
  37.     Boolean  BOOLEAN019
  38.     Boolean  BOOLEAN020
  39.     Boolean  BOOLEAN021
  40.     Boolean  BOOLEAN022
  41.     Date     DATE002
  42.     Date     DATE003
  43.     Integer  INTEGER003
  44.     Integer  INTEGER004
  45.     Integer  INTEGER005
  46.     Integer  TINTEGER006(5)
  47.     Integer  INTEGER007
  48.     Integer  INTEGER008
  49.     Integer  INTEGER009
  50.     Integer  INTEGER010
  51.     Integer  INTEGER011
  52.     String   STRING006
  53.     String   STRING007
  54.     String   STRING008
  55.     String   STRING009
  56.     String   STRING010
  57.     String   STRING011
  58.     String   STRING012
  59.     String   STRING013
  60.     String   STRING014
  61.     String   TSTRING015(5)
  62.     String   STRING016
  63.     String   STRING017
  64.     String   STRING018
  65.     String   STRING019
  66.     String   STRING020
  67.     String   STRING021
  68.     String   STRING022
  69.     String   STRING023
  70.     String   STRING024
  71.     String   STRING025
  72.     String   STRING026
  73.     String   STRING027
  74.     String   STRING028
  75.     String   STRING029
  76.     String   STRING030
  77.     String   STRING031
  78.     String   STRING032
  79.     String   STRING033
  80.     String   STRING034
  81.     String   STRING035
  82.     String   STRING036
  83.     String   STRING037
  84.     String   STRING038
  85.     String   STRING039
  86.     String   STRING040
  87.     String   STRING041
  88.     String   STRING042
  89.     String   STRING043
  90.     String   STRING044
  91.     String   STRING045
  92.     String   STRING046
  93.     String   STRING047
  94.     String   STRING048
  95.     String   STRING049
  96.     String   STRING050
  97.     String   STRING051
  98.     String   STRING052
  99.     String   STRING053
  100.     String   STRING054
  101.     String   STRING055
  102.     Byte     BYTE001
  103.     Byte     BYTE002
  104.     Byte     BYTE003
  105.     Byte     BYTE004
  106.     Byte     BYTE005
  107.     Byte     BYTE006
  108.     Byte     BYTE007
  109.     Byte     BYTE008
  110.     Byte     BYTE009
  111.     Byte     BYTE010
  112.     Byte     BYTE011
  113.     Byte     BYTE012
  114.     Byte     BYTE013
  115.     Byte     TBYTE014(4)
  116.     Byte     TBYTE015(20)
  117.     Byte     BYTE016
  118.     Byte     BYTE017
  119.     Byte     BYTE018
  120.     Byte     BYTE019
  121.     Byte     BYTE020
  122.     Byte     BYTE021
  123.     Byte     BYTE022
  124.     Byte     BYTE023
  125.     Byte     BYTE024
  126.     Byte     BYTE025
  127.     Byte     BYTE026
  128.     Byte     BYTE027
  129.     Int      INT001
  130.     Int      INT002
  131.     Int      INT003
  132.     Int      INT004
  133.     Int      INT005
  134.     Int      INT006
  135.     Int      INT007
  136.     Int      INT008
  137.     Int      INT009
  138.  
  139. ;------------------------------------------------------------------------------
  140.  
  141.     INT008 = 179
  142.     STRING012 = Chr(13) + Chr(10)
  143.     STRING054 = Chr(34)
  144.     STRING055 = STRING054 + "," + STRING054
  145.     STRING033 = Replace(Space(60), " ", "=")
  146.     STRING034 = Replace(Space(60), " ", "-")
  147.     STRING039 = Chr(255)
  148.     TBYTE014(1) = 10
  149.     TBYTE014(2) = 16
  150.     TBYTE014(3) = 8
  151.     TBYTE014(4) = 2
  152.     BYTE024 = 0
  153.     BOOLEAN013 = 0
  154.     TBYTE015(1) = 30
  155.     TBYTE015(2) = 30
  156.     TBYTE015(3) = 15
  157.     TBYTE015(4) = 60
  158.     TBYTE015(5) = 60
  159.     TBYTE015(6) = 60
  160.     TBYTE015(7) = 60
  161.     TBYTE015(8) = 60
  162.     TBYTE015(9) = 50
  163.     TBYTE015(10) = 50
  164.     TBYTE015(11) = 25
  165.     TBYTE015(12) = 10
  166.     TBYTE015(13) = 10
  167.     TBYTE015(14) = 15
  168.     TBYTE015(15) = 25
  169.     TBYTE015(16) = 25
  170.     TBYTE015(17) = 12
  171.     TBYTE015(18) = 24
  172.     TBYTE015(19) = 13
  173.     TBYTE015(20) = 13
  174.     Newline
  175.     STRING027 = "@X0FPPE-Script v1.70 (11-01-94) - PCBoard Scripting Program"
  176.     STRING028 = "@X0FCopyright (C) 1993,1994 Gary Meeker.  All Rights Reserved."
  177.     PrintLn STRING027
  178.     PrintLn STRING028
  179.     Newline
  180.     GetUser
  181.     GetToken STRING006
  182.     BYTE007 = 1
  183.     BOOLEAN020 = 0
  184.     If (STRING006 == "") STRING006 = PPEPath() + PPEName() + ".CNF"
  185.     If (Exist(STRING006)) Goto LABEL001
  186.     If (Exist(PPEPath() + STRING006)) Then
  187.         STRING006 = PPEPath() + STRING006
  188.     Else
  189.         STRING027 = "PPE-Script: Missing Config file: " + STRING006
  190.         PrintLn STRING027
  191.         Log STRING027, 0
  192.         Stop
  193.     Endif
  194.     :LABEL001
  195.     FOpen 1, STRING006, 0, 0
  196.     FGet 1, STRING007
  197.     FGet 1, STRING038
  198.     FGet 1, INTEGER004
  199.     FGet 1, STRING008
  200.     FGet 1, STRING027
  201.     Tokenize STRING027
  202.     GetToken BYTE013
  203.     GetToken INT001
  204.     GetToken INT002
  205.     Gosub LABEL010
  206.     FGet 1, STRING027
  207.     Tokenize STRING027
  208.     GetToken BYTE011
  209.     GetToken INT006
  210.     GetToken BYTE009
  211.     GetToken STRING009
  212.     FGet 1, STRING027
  213.     Tokenize STRING027
  214.     GetToken BOOLEAN001
  215.     GetToken BOOLEAN002
  216.     GetToken BOOLEAN003
  217.     GetToken BOOLEAN004
  218.     Gosub LABEL008
  219.     BYTE019 = BYTE018
  220.     Gosub LABEL008
  221.     BYTE020 = BYTE018
  222.     GetToken BOOLEAN005
  223.     FGet 1, STRING027
  224.     Tokenize STRING027
  225.     GetToken BOOLEAN008
  226.     GetToken BOOLEAN009
  227.     GetToken BOOLEAN010
  228.     Gosub LABEL008
  229.     BYTE021 = BYTE018
  230.     Gosub LABEL008
  231.     BYTE022 = BYTE018
  232.     Gosub LABEL008
  233.     BYTE023 = BYTE018
  234.     FGet 1, STRING010
  235.     FGet 1, STRING011
  236.     FGet 1, STRING013
  237.     FGet 1, STRING014
  238.     FGet 1, TSTRING015(BYTE007)
  239.     FGet 1, STRING016
  240.     FGet 1, STRING044
  241.     FGet 1, STRING027
  242.     Tokenize Replace(STRING027, " ", Chr(255))
  243.     STRING049 = Replace(GetToken(), Chr(255), " ")
  244.     GetToken STRING050
  245.     GetToken STRING051
  246.     GetToken STRING052
  247.     GetToken BOOLEAN014
  248.     FClose 1
  249.     If (STRING050 == "") STRING050 = "P"
  250.     If (STRING051 == "") STRING051 = "O"
  251.     If (BYTE013 == 0) BYTE013 = 3
  252.     If (STRING014 == "") STRING014 = PPEPath()
  253.     If (BYTE019 == 0) BYTE019 = DefColor()
  254.     If (BYTE020 == 0) BYTE020 = DefColor()
  255.     If (BYTE021 == 0) BYTE021 = DefColor()
  256.     If (BYTE022 == 0) BYTE022 = DefColor()
  257.     If (BYTE023 == 0) BYTE023 = DefColor()
  258.     If (STRING009 == "") STRING009 = "MF"
  259.     STRING023 = " "
  260.     BYTE010 = 1
  261.     Gosub LABEL014
  262.     STRING032 = Upper(STRING023)
  263.     STRING023 = ""
  264.     INT006 = BYTE011
  265.     BYTE009 = 1
  266.     BYTE010 = 8
  267.     Gosub LABEL014
  268.     STRING022 = STRING023
  269.     If (STRING022 <> "") Gosub LABEL018
  270.     BYTE008 = Asc(Mid(STRING028, 32, 1)) - Asc(Mid(STRING028, 11, 1))
  271.     If ((CurSec() < INT001) || (CurSec() > INT002)) Then
  272.         DispStr STRING010
  273.         Newline
  274.         Stop
  275.     Endif
  276.     Print "Initializing data..."
  277.     STRING007 = Upper(STRING007)
  278.     TSTRING015(BYTE007) = Upper(TSTRING015(BYTE007))
  279.     STRING040 = Mask_Ascii() + "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
  280.     If (BYTE008 <> TBYTE014(2) + TBYTE014(4)) Stop
  281.     BYTE001 = 0
  282.     Gosub LABEL016
  283.     Print Chr(13)
  284.     If (INTEGER004 == INTEGER003 * INT008) Then
  285.         PrintLn "@X0FRegistered to: @X0E", STRING038, "@X0F"
  286.     Else
  287.         Print "@X0FUnregistered Evaluation Copy for [@X0E", STRING007, "@X0F] "
  288.         For INT005 = 1 To TBYTE014(2)
  289.             ResetDisp
  290.             If (INT005 % TBYTE014(4) == 0) Then
  291.                 Print "@X08.@X0F"
  292.                 Continue
  293.             Endif
  294.             Delay BYTE008
  295.         Next
  296.         ResetDisp
  297.         Newline
  298.     Endif
  299.     Newline
  300.     STRING007 = U_Name()
  301.     If (STRING008 <> "") Then
  302.         If (Exist(STRING008)) DispFile STRING008, 4 + 2 + 1
  303.     Endif
  304.     If (STRING011 <> "") Then
  305.         STRING027 = YesChar()
  306.         InputYN STRING011, STRING027, BYTE019
  307.         Newline
  308.         If (STRING027 == NoChar()) Then
  309.             If (INT003 > -1) Gosub LABEL022
  310.             Stop
  311.         Endif
  312.     Endif
  313.     If (STRING044 <> "") Then
  314.         BYTE024 = 7
  315.         BYTE002 = 7
  316.         STRING027 = STRING044
  317.         Gosub LABEL031
  318.     Endif
  319.     BYTE002 = 0
  320.     STRING027 = STRING016
  321.     If (STRING027 <> "") Gosub LABEL031
  322.     BOOLEAN018 = 0
  323.     BOOLEAN019 = 0
  324.     STRING023 = ""
  325.     While (BYTE007 > 0) Do
  326.         If (TSTRING015(BYTE007) == "") Goto LABEL002
  327.         Gosub LABEL019
  328.         FOpen BYTE007, TSTRING015(BYTE007), 0, 0
  329.         TSTRING015(BYTE007) = ""
  330.         TINTEGER006(BYTE007) = 0
  331.         :LABEL002
  332.         BOOLEAN017 = BOOLEAN018
  333.         BOOLEAN015 = BOOLEAN019
  334.         BOOLEAN022 = 0
  335.         STRING037 = ""
  336.         :LABEL003
  337.         If (BOOLEAN015) Goto LABEL007
  338.         STRING021 = ""
  339.         If (STRING023 <> "") Then
  340.             STRING022 = STRING023
  341.             STRING023 = ""
  342.         Else
  343.             STRING022 = ""
  344.         Endif
  345.         FGet BYTE007, STRING027
  346.         BOOLEAN015 = (STRING027 == "")
  347.         If (BOOLEAN015) Goto LABEL007
  348.         BYTE001 = InStr(">&#%@RIMJBCSWDT!*$:P?¿", Left(STRING027, 1))
  349.         If ((BYTE001 == 0) || (BOOLEAN017 && (BYTE001 < 18))) Goto LABEL006
  350.         STRING011 = Mid(STRING027, TBYTE014(4), Len(STRING027) - 1)
  351.         If ((BYTE001 > 5) && (BYTE001 < 17)) Then
  352.             Tokenize Replace(STRING027, " ", STRING039)
  353.             GetToken STRING028
  354.             INT006 = Strip(GetToken(), STRING039)
  355.         Endif
  356.         If ((BYTE001 >= 1) && (BYTE001 <= 3)) Then
  357.             If (BYTE001 < 3) FPutLn BYTE002, STRING011
  358.             If (BYTE001 > 1) Then
  359.                 If (Left(STRING011, 1) <> "%") Then
  360.                     STRING011 = STRING011 + STRING012
  361.                 Endif
  362.                 DispStr STRING011
  363.             Endif
  364.         Else
  365.             Select Case (BYTE001)
  366.                 Case 4
  367.                     DispFile STRING011, 4 + 2 + 1
  368.                 Case 5
  369.                     Log STRING011, 0
  370.                 Case 6, 7
  371.                     Select Case (INT006)
  372.                         Case 1
  373.                             BOOLEAN016 = BYTE003
  374.                         Case 2
  375.                             BOOLEAN016 = !BYTE003
  376.                         Case 3
  377.                             BOOLEAN016 = !BOOLEAN020
  378.                         Case 4
  379.                             BOOLEAN016 = (BYTE003 && !BOOLEAN020)
  380.                         Case 5
  381.                             BOOLEAN016 = (!BYTE003 && !BOOLEAN020)
  382.                         Case Else
  383.                             BOOLEAN016 = 1
  384.                     End Select
  385.                     If (BOOLEAN016) Then
  386.                         If (BYTE001 == 7) Gosub LABEL009
  387.                         Gosub LABEL010
  388.                         Gosub LABEL022
  389.                     Endif
  390.                 Case 8
  391.                     INT006 = Strip(GetToken(), STRING039)
  392.                     STRING041 = Replace(GetToken(), STRING039, " ")
  393.                     STRING042 = Replace(GetToken(), STRING039, " ")
  394.                     STRING043 = Replace(GetToken(), STRING039, " ")
  395.                     STRING028 = Strip(GetToken(), STRING039)
  396.                     BOOLEAN006 = Strip(GetToken(), STRING039)
  397.                     BOOLEAN007 = Strip(GetToken(), STRING039)
  398.                     DATE003 = Strip(GetToken(), STRING039)
  399.                     STRING018 = Strip(GetToken(), STRING039)
  400.                     If ((STRING018 == "") && (BYTE024 > 0)) Then
  401.                         STRING018 = STRING044
  402.                         FClose BYTE024
  403.                     Endif
  404.                     Message INT006, STRING041, STRING042, STRING043, STRING028, BOOLEAN006, BOOLEAN007, DATE003, STRING018
  405.                     If ((STRING018 == "") && (BYTE024 > 0)) FAppend BYTE024, STRING044, 2, 0
  406.                 Case 9
  407.                     LastIn Strip(GetToken(), STRING039)
  408.                 Case 10
  409.                     Gosub LABEL011
  410.                     If (BOOLEAN016) Then
  411.                         STRING021 = STRING019
  412.                     Else
  413.                         STRING021 = STRING020
  414.                     Endif
  415.                 Case 11
  416.                     Gosub LABEL011
  417.                     If (BOOLEAN016) Then
  418.                         If (STRING019 <> "") Call STRING019 + " " + STRING036
  419.                     Endif
  420.                 Case 12
  421.                     Gosub LABEL011
  422.                     If (BOOLEAN016) Then
  423.                         If (STRING019 <> "") Then
  424.                             WrUSys
  425.                             Shell 0, TINTEGER006(BYTE007), STRING019, STRING036
  426.                             RdUSys
  427.                         Endif
  428.                     Endif
  429.                 Case 13
  430.                     Gosub LABEL011
  431.                     Gosub LABEL012
  432.                     STRING030 = Left(LastAns(), BYTE010)
  433.                     Select Case (INT006)
  434.                         Case 1
  435.                             U_Cmnt1 = Left(U_Cmnt1, BYTE009 - 1) + STRING030 + Right(U_Cmnt1, 31 - BYTE009 - BYTE010)
  436.                         Case 2
  437.                             U_Cmnt2 = Left(U_Cmnt2, BYTE009 - 1) + STRING030 + Right(U_Cmnt2, 31 - BYTE009 - BYTE010)
  438.                         Case 3
  439.                             U_Ver = Left(U_Ver, BYTE009 - 1) + STRING030 + Right(U_Ver, 26 - BYTE009 - BYTE010)
  440.                         Case 4, 8
  441.                             U_Notes(INT006 - 4) = Left(U_Notes(INT006 - 4), BYTE009 - 1) + STRING030 + Right(U_Notes(INT006 - 4), 61 - BYTE009 - BYTE010)
  442.                         Case 9, 14
  443.                             U_Addr(INT006 - 9) = Left(U_Addr(INT006 - 9), BYTE009 - 1) + STRING030 + Right(U_Addr(INT006 - 9), 61 - BYTE009 - BYTE010)
  444.                     End Select
  445.                     :LABEL004
  446.                     BOOLEAN013 = 1
  447.                 Case 14
  448.                     Gosub LABEL011
  449.                     Gosub LABEL014
  450.                 Case 15
  451.                     STRING018 = Strip(GetToken(), STRING039)
  452.                     STRING019 = Strip(GetToken(), STRING039)
  453.                     STRING020 = Strip(GetToken(), STRING039)
  454.                     BYTE009 = 1
  455.                     BYTE010 = TBYTE015(INT006)
  456.                     Gosub LABEL014
  457.                     STRING022 = STRING023
  458.                     If (STRING018 <> "") Gosub LABEL015
  459.                     Gosub LABEL012
  460.                     STRING023 = ""
  461.                 Case 16
  462.                     BOOLEAN016 = GetToken()
  463.                     STRING018 = Strip(GetToken(), STRING039)
  464.                     STRING046 = Strip(GetToken(), STRING039)
  465.                     STRING047 = Strip(GetToken(), STRING039)
  466.                     STRING019 = Strip(GetToken(), STRING039)
  467.                     STRING020 = Strip(GetToken(), STRING039)
  468.                     Gosub LABEL032
  469.                 Case 17
  470.                     Gosub LABEL016
  471.                     If (BOOLEAN012) Then
  472.                         PrintLn "@X0CSysop: @X0F", STRING007
  473.                         PrintLn "@X0C  BBS: @X0F", STRING038
  474.                         PrintLn "@X0CYour Registration Number is: [@X0F", INTEGER003 * INT008, "@X0C]"
  475.                     Endif
  476.                 Case 18
  477.                     If (STRING037 == "") Then
  478.                         BOOLEAN017 = 0
  479.                         BOOLEAN018 = 0
  480.                     Endif
  481.                 Case 19
  482.                     If (STRING037 == Upper(STRING011)) Then
  483.                         BOOLEAN017 = 0
  484.                         BOOLEAN018 = 0
  485.                         STRING037 = ""
  486.                     Endif
  487.                 Case 20
  488.                     BOOLEAN022 = STRING011
  489.                     FGet BYTE007, STRING017
  490.                     Tokenize Replace(STRING017, " ", STRING039)
  491.                     GetToken STRING024
  492.                     GetToken BYTE009
  493.                     GetToken BYTE010
  494.                     STRING027 = Strip(GetToken(), STRING039)
  495.                     If (STRING022 == "") Then
  496.                         STRING022 = Replace(GetToken(), STRING039, " ")
  497.                     Else
  498.                         GetToken STRING030
  499.                     Endif
  500.                     STRING018 = Strip(GetToken(), STRING039)
  501.                     STRING019 = Strip(GetToken(), STRING039)
  502.                     STRING020 = Strip(GetToken(), STRING039)
  503.                     STRING045 = Strip(GetToken(), STRING039)
  504.                     BOOLEAN021 = (STRING018 == "")
  505.                     If (BOOLEAN002 && (!BOOLEAN017 || BOOLEAN004)) Then
  506.                         If (BOOLEAN003) FPut BYTE002, "Q: "
  507.                         FPutLn BYTE002, StripAtx(STRING011)
  508.                     Endif
  509.                     STRING029 = STRING040
  510.                     If (STRING027 == "") Then
  511.                         INTEGER005 = 70
  512.                     Else
  513.                         INTEGER005 = S2I(STRING027, TBYTE014(1 + InStr("HOB", Upper(Right(STRING027, 1)))))
  514.                     Endif
  515.                     BYTE003 = -1
  516.                     BYTE006 = InStr("TPSDBCNYAV", Left(STRING024, 1))
  517.                     If (BOOLEAN017) Then
  518.                         If (BOOLEAN004) Then
  519.                             If (BOOLEAN003) FPut BYTE002, "A: "
  520.                             FPutLn BYTE002, "[N/A]"
  521.                         Endif
  522.                     ElseIf (BYTE006 == 1) Then
  523.                         If (STRING024 <> "T") Then
  524.                             STRING029 = ""
  525.                             INT006 = 2
  526.                             While (INT006 <= Len(STRING024)) Do
  527.                                 If (Upper(Mid(STRING024, INT006, 1)) == "E") Then
  528.                                     STRING029 = STRING029 + Mask_Ascii()
  529.                                     Goto LABEL005
  530.                                 Endif
  531.                                 If (Upper(Mid(STRING024, INT006, 1)) == "A") Then
  532.                                     STRING029 = STRING029 + Mask_Alpha()
  533.                                     Goto LABEL005
  534.                                 Endif
  535.                                 If (Upper(Mid(STRING024, INT006, 1)) == "N") Then
  536.                                     STRING029 = STRING029 + Mask_Num()
  537.                                     Goto LABEL005
  538.                                 Endif
  539.                                 If (Upper(Mid(STRING024, INT006, 1)) == "M") Then
  540.                                     STRING029 = STRING029 + Mask_Num() + ".$"
  541.                                     Goto LABEL005
  542.                                 Endif
  543.                                 If (Upper(Mid(STRING024, INT006, 1)) == Chr(46)) Then
  544.                                     STRING029 = STRING029 + ",.;:"
  545.                                     Goto LABEL005
  546.                                 Endif
  547.                                 If (Upper(Mid(STRING024, INT006, 1)) == "P") Then
  548.                                     STRING029 = STRING029 + Mask_Num() + "()[]+- "
  549.                                     Goto LABEL005
  550.                                 Endif
  551.                                 If (Upper(Mid(STRING024, INT006, 1)) == "S") Then
  552.                                     STRING029 = STRING029 + " "
  553.                                     Goto LABEL005
  554.                                 Endif
  555.                                 If (Upper(Mid(STRING024, INT006, 1)) == "+") Then
  556.                                     STRING029 = STRING029 + "+-"
  557.                                     Goto LABEL005
  558.                                 Endif
  559.                                 If (Upper(Mid(STRING024, INT006, 1)) == "^") Then
  560.                                     Inc INT006
  561.                                     STRING029 = STRING029 + Mid(STRING024, INT006, 1)
  562.                                     Goto LABEL005
  563.                                 Endif
  564.                                 :LABEL005
  565.                                 Inc INT006
  566.                             EndWhile
  567.                         Endif
  568.                         If (BYTE010 == 0) Then
  569.                             BYTE010 = 60
  570.                         Endif
  571.                         Gosub LABEL025
  572.                         If ((BYTE006 == 1) && !BOOLEAN021) Gosub LABEL015
  573.                     Else
  574.                         If (BYTE006 > 0) Then
  575.                             Gosub LABEL025
  576.                         Endif
  577.                     Endif
  578.                     Gosub LABEL012
  579.                 Case 22
  580.                     STRING038 = STRING022
  581.                     BOOLEAN012 = (INTEGER004 == 347618)
  582.                 Endif
  583.         End Select
  584.         Select Case (Upper(STRING021))
  585.             Case "[STOP]"
  586.                 BOOLEAN015 = 1
  587.             Case "[END]"
  588.                 BOOLEAN015 = 1
  589.                 BOOLEAN019 = 1
  590.             Case "[SKIP]"
  591.                 BOOLEAN017 = 1
  592.             Case "[SKIPALL]"
  593.                 BOOLEAN017 = 1
  594.                 BOOLEAN018 = 1
  595.             Case ""
  596.                 If (BYTE007 > 4) Then
  597.                     STRING027 = "PPE-Script: Too many levels " + STRING021
  598.                     PrintLn STRING027
  599.                     Log STRING027, 0
  600.                 Else
  601.                     Inc BYTE007
  602.                     TSTRING015(BYTE007) = STRING021
  603.                     Goto LABEL007
  604.                 Endif
  605.             Case "[", "]"
  606.                 BOOLEAN017 = 1
  607.                 STRING037 = Mid(STRING021, 2, Len(STRING021) - 2)
  608.                 If (BOOLEAN005) FSeek BYTE007, 0, 0
  609.         End Select
  610.         :LABEL006
  611.         Goto LABEL003
  612.         :LABEL007
  613.         FClose BYTE007
  614.         If (BOOLEAN015) Dec BYTE007
  615.     EndWhile
  616.     If (BYTE002 > 0) FClose BYTE002
  617.     If (BYTE024 > 0) Then
  618.         FClose BYTE024
  619.         Delete STRING044
  620.     Endif
  621.     If (BOOLEAN020 && BOOLEAN001) Then
  622.         STRING027 = "PPE-Script: User failed to answer " + String(INT009) + " question(s)!"
  623.         Log STRING027, 0
  624.     Endif
  625.     DispStr STRING013
  626.     Newline
  627.     If (BOOLEAN013) Then
  628.         PutUser
  629.     Endif
  630.     End
  631.     :LABEL008
  632.     GetToken STRING027
  633.     If (Left(STRING027, 1) == "@") Then
  634.         BYTE018 = S2I(Right(STRING027, 2), TBYTE014(2))
  635.     Else
  636.         BYTE018 = STRING027
  637.     Endif
  638.     Return
  639.     :LABEL009
  640.     If (INT006 > 127) Then
  641.         INT006 = INT006 - 128
  642.         INT005 = TINTEGER006(BYTE007)
  643.         If (INT005 < 1) INT005 = 1
  644.     Else
  645.         INT005 = 1
  646.     Endif
  647.     GetToken STRING018
  648.     If (!Exist(STRING018)) STRING018 = STRING014 + STRING018
  649.     If (Exist(STRING018)) Then
  650.         STRING027 = ReadLine(STRING018, INT005)
  651.         FClose -1
  652.         If (STRING027 <> "") Tokenize Replace(STRING027, " ", STRING039)
  653.     Endif
  654.     Return
  655.     :LABEL010
  656.     INT003 = -1
  657.     INT004 = -1
  658.     INTEGER007 = -1
  659.     STRING030 = Strip(GetToken(), STRING039)
  660.     If (STRING030 <> "") INT003 = STRING030
  661.     STRING030 = Strip(GetToken(), STRING039)
  662.     If (STRING030 <> "") INT004 = STRING030
  663.     STRING030 = Strip(GetToken(), STRING039)
  664.     If (STRING030 <> "") INTEGER007 = STRING030
  665.     STRING030 = Strip(GetToken(), STRING039)
  666.     If (STRING030 == "X") Then
  667.         INTEGER008 = -U_Fdl()
  668.     Else
  669.         INTEGER008 = STRING030
  670.     Endif
  671.     STRING030 = Strip(GetToken(), STRING039)
  672.     If (STRING030 == "X") Then
  673.         INTEGER009 = -U_Bdl()
  674.     Else
  675.         INTEGER009 = STRING030
  676.     Endif
  677.     STRING030 = Strip(GetToken(), STRING039)
  678.     If (STRING030 == "X") Then
  679.         INTEGER010 = -U_BdlDay()
  680.     Else
  681.         INTEGER010 = STRING030
  682.     Endif
  683.     INTEGER011 = Strip(GetToken(), STRING039)
  684.     STRING025 = Strip(GetToken(), STRING039)
  685.     STRING026 = Strip(GetToken(), STRING039)
  686.     Return
  687.     :LABEL011
  688.     GetToken BYTE009
  689.     GetToken BYTE010
  690.     STRING019 = Strip(GetToken(), STRING039)
  691.     STRING020 = Strip(GetToken(), STRING039)
  692.     If (BYTE001 > 12) Return
  693.     INT005 = INT006
  694.     INT006 = (INT006 && 127)
  695.     Select Case (INT006)
  696.         Case 0
  697.             BOOLEAN016 = 1
  698.         Case 1
  699.             BOOLEAN016 = BYTE003
  700.         Case 2
  701.             Gosub LABEL021
  702.         Case 3
  703.             If (INT005 > 127) Then
  704.                 BOOLEAN016 = !(STRING032 == Mid(STRING009, 2, 1))
  705.             Else
  706.                 BOOLEAN016 = (STRING032 == Left(STRING009, 1))
  707.             Endif
  708.         Case 4
  709.             BOOLEAN016 = ((U_Sec >= BYTE009) && (U_Sec <= BYTE010))
  710.         Case 5
  711.             BOOLEAN016 = ((U_Logons() >= BYTE009) && (U_Logons() <= BYTE010))
  712.         Case Else
  713.             BOOLEAN016 = ((TINTEGER006(BYTE007) >= BYTE009) && (TINTEGER006(BYTE007) <= BYTE010))
  714.     End Select
  715.     If (INT005 > 127) BOOLEAN016 = ! BOOLEAN016
  716.     If (BYTE001 > 10) Then
  717.         INT005 = 0
  718.         STRING036 = ""
  719.         For INT007 = 1 To Len(STRING027)
  720.             If (Mid(STRING027, INT007, 1) == ";") Then
  721.                 Inc INT005
  722.                 If (INT005 > 4) Then
  723.                     STRING036 = Replace(Right(STRING027, Len(STRING027) - INT007), STRING039, " ")
  724.                     Break
  725.                 Endif
  726.             Endif
  727.         Next
  728.     Endif
  729.     Return
  730.     :LABEL012
  731.     Select Case (BYTE003)
  732.         Case 1
  733.             STRING021 = STRING019
  734.         Case 0
  735.             STRING021 = STRING020
  736.     End Select
  737.     :LABEL013
  738.     Return
  739.     :LABEL014
  740.     Select Case (INT006)
  741.         Case 1
  742.             STRING023 = Mid(U_Cmnt1, BYTE009, BYTE010)
  743.         Case 2
  744.             STRING023 = Mid(U_Cmnt2, BYTE009, BYTE010)
  745.         Case 3
  746.             STRING023 = Mid(U_Ver, BYTE009, BYTE010)
  747.         Case 4, 8
  748.             STRING023 = Mid(U_Notes(INT006 - 4), BYTE009, BYTE010)
  749.         Case 9, 14
  750.             STRING023 = Mid(U_Addr(INT006 - 9), BYTE009, BYTE010)
  751.         Case 15
  752.             STRING023 = Mid(U_Name(), BYTE009, BYTE010)
  753.         Case 16
  754.             STRING023 = Mid(U_Alias, BYTE009, BYTE010)
  755.         Case 17
  756.             STRING023 = Mid(U_Pwd, BYTE009, BYTE010)
  757.         Case 18
  758.             STRING023 = Mid(U_City, BYTE009, BYTE010)
  759.         Case 19
  760.             STRING023 = Mid(U_BDPhone, BYTE009, BYTE010)
  761.         Case 20
  762.             STRING023 = Mid(U_HVPhone, BYTE009, BYTE010)
  763.         Case Else
  764.             STRING023 = ""
  765.     End Select
  766.     Return
  767.     :LABEL015
  768.     BYTE003 = 0
  769.     If (!Exist(STRING018)) STRING018 = STRING014 + STRING018
  770.     If (Exist(STRING018)) Then
  771.         FOpen 6, STRING018, 0, 0
  772.         STRING028 = RTrim(Upper(STRING022), " ")
  773.         FGet 6, STRING027
  774.         While ((STRING027 <> "") && !BYTE003) Do
  775.             STRING027 = RTrim(Upper(STRING027), " ")
  776.             BOOLEAN011 = (Left(STRING027, 1) == "*")
  777.             If (BOOLEAN011) Then
  778.                 BYTE003 = (STRING028 == Mid(STRING027, 2, Len(STRING027) - 1))
  779.             Else
  780.                 BYTE003 = (InStr(STRING028, STRING027) > 0)
  781.             Endif
  782.             FGet 6, STRING027
  783.         EndWhile
  784.         FClose 6
  785.     Else
  786.         STRING027 = "PPE-Script: Missing List: " + STRING018
  787.         PrintLn STRING027
  788.         Log STRING027, 0
  789.     Endif
  790.     Return
  791.     :LABEL016
  792.     INTEGER003 = 0
  793.     STRING027 = Strip(STRING038, " ")
  794.     Gosub LABEL017
  795.     If (BYTE001 == 0) Print "."
  796.     STRING027 = Trim(STRING007, " ")
  797.     :LABEL017
  798.     STRING027 = Upper(STRING027)
  799.     INT006 = Len(STRING027)
  800.     BYTE017 = 0
  801.     For INT005 = 1 To INT006
  802.         BYTE016 = Asc(Mid(STRING027, INT005, 1))
  803.         INTEGER003 = INTEGER003 + XOr(BYTE016, BYTE017)
  804.         BYTE017 = BYTE016
  805.     Next
  806.     Return
  807.     :LABEL018
  808.     DATE002 = STRING022
  809.     BYTE012 = ((Date() - DATE002 + 36525 * (Year(STRING022) > 1999)) * 100) / 36525
  810.     Return
  811.     :LABEL019
  812.     If (Right(STRING014, 1) <> "\") STRING014 = STRING014 + "\"
  813.     STRING027 = STRING014 + TSTRING015(BYTE007)
  814.     If (Right(TSTRING015(BYTE007), 4) == ".DAT") Then
  815.         STRING027 = Left(STRING027, Len(STRING027) - 4)
  816.     Endif
  817.     If (Exist(STRING027 + LangExt())) Then
  818.         TSTRING015(BYTE007) = STRING027 + LangExt()
  819.     ElseIf (Exist(STRING027)) Then
  820.         TSTRING015(BYTE007) = STRING027
  821.     ElseIf (InStr(TSTRING015(BYTE007), "\") == 0) Then
  822.         TSTRING015(BYTE007) = STRING027 + ".DAT"
  823.     Endif
  824.     If (Exist(TSTRING015(BYTE007))) Goto LABEL020
  825.     STRING027 = "PPE-Script: Missing Script: " + TSTRING015(BYTE007)
  826.     PrintLn STRING027
  827.     Log STRING027, 0
  828.     Stop
  829.     :LABEL020
  830.     Return
  831.     :LABEL021
  832.     If (BYTE010 == 0) BYTE010 = 255
  833.     BOOLEAN016 = ((BYTE012 >= BYTE009) && (BYTE012 <= BYTE010))
  834.     Return
  835.     :LABEL022
  836.     If (INT003 > -1) Then
  837.         U_Sec = INT003
  838.         If (BOOLEAN001) Then
  839.             STRING027 = "PPE-Script: User level set to: " + String(INT003)
  840.             Log STRING027, 0
  841.         Endif
  842.     Endif
  843.     If (INT004 > -1) U_ExpSec = INT004
  844.     If (INTEGER007 > -1) U_ExpDate = Date() + INTEGER007
  845.     If (INTEGER008 <> 0) AdjTFiles INTEGER008
  846.     If (INTEGER009 <> 0) AdjTBytes INTEGER009
  847.     If (INTEGER010 <> 0) AdjDBytes INTEGER010
  848.     If (EvtTimeAdj()) Goto LABEL023
  849.     If (INTEGER011 <> 0) AdjTime INTEGER011
  850.     :LABEL023
  851.     If (STRING025 <> "") Then
  852.         If (BOOLEAN001) Then
  853.             STRING027 = "PPE-Script: User registered in: " + STRING025
  854.             Log STRING027, 0
  855.         Endif
  856.         STRING027 = STRING025
  857.         BYTE005 = 1
  858.         Gosub LABEL024
  859.     Endif
  860.     If (STRING026 <> "") Then
  861.         STRING027 = STRING026
  862.         BYTE005 = 2
  863.         Gosub LABEL024
  864.     Endif
  865.     BOOLEAN013 = 1
  866.     Return
  867.     :LABEL024
  868.     STRING027 = Replace(STRING027, ",", ";")
  869.     Tokenize STRING027
  870.     STRING031 = "-"
  871.     While (STRING031 <> "") Do
  872.         GetToken STRING031
  873.         If (STRING031 <> "") Then
  874.             INT006 = InStr(STRING031, "-")
  875.             If (INT006 > 0) Then
  876.                 For INT005 = Left(STRING031, INT006 - 1) To Mid(STRING031, INT006 + 1, Len(STRING031) - INT006)
  877.                     ConfFlag INT005, BYTE005
  878.                 Next
  879.                 Continue
  880.             Endif
  881.             ConfFlag STRING031, BYTE005
  882.         Endif
  883.     EndWhile
  884.     Return
  885.     :LABEL025
  886.     BOOLEAN016 = 0
  887.     BYTE004 = 0
  888.     Select Case (BYTE006)
  889.         Case 2
  890.             STRING029 = Mask_Num() + "()[]-+ "
  891.             BYTE010 = 12
  892.         Case 3
  893.             If (BOOLEAN021) Then
  894.                 STRING029 = STRING009 + " "
  895.             Else
  896.                 STRING029 = STRING018
  897.             Endif
  898.             BYTE010 = 1
  899.             INTEGER005 = Or(INTEGER005, 8)
  900.         Case 8
  901.             BYTE010 = 1
  902.         Case 10
  903.             If (BYTE010 == 0) BYTE010 = 25
  904.     End Select
  905.     :LABEL026
  906.     If ((STRING045 <> "") && (InStr(STRING029, "?") == 0)) STRING029 = STRING029 + "?"
  907.     STRING035 = STRING011
  908.     While (!BOOLEAN016 && (BYTE004 < BYTE013)) Do
  909.         If (Right(STRING035, 1) == "?") Then
  910.             Color BYTE019
  911.             Print Left(STRING035, 73)
  912.             STRING011 = ""
  913.             If ((BYTE006 == 5) || (BYTE006 == 7)) Then
  914.                 Newline
  915.                 Goto LABEL028
  916.             Endif
  917.             If (BOOLEAN008) Then
  918.                 Color BYTE021
  919.                 Print "Min=", BYTE009
  920.             Endif
  921.             Newline
  922.             If (BOOLEAN009) Then
  923.                 Color BYTE022
  924.                 If (!AnsiOn() || (And(INTEGER005, 2) == 0)) Then
  925.                     Print " ("
  926.                     Goto LABEL027
  927.                 Endif
  928.                 Print "   "
  929.                 :LABEL027
  930.                 Print Left(STRING033, BYTE009)
  931.                 Color BYTE023
  932.                 Print Left(STRING034, BYTE010 - BYTE009)
  933.                 If (!AnsiOn() || (And(INTEGER005, 2) == 0)) Then
  934.                     INTEGER005 = (INTEGER005 && !4)
  935.                     PrintLn ")"
  936.                     Goto LABEL028
  937.                 Endif
  938.                 PrintLn ""
  939.             Endif
  940.         Endif
  941.         :LABEL028
  942.         Color BYTE020
  943.         If ((BYTE006 >= 1) && (BYTE006 <= 3)) Then
  944.             InputStr STRING011, STRING022, BYTE019, BYTE010, STRING029, INTEGER005
  945.             If (BYTE006 == 3) Then
  946.                 If (STRING022 == "") STRING022 = " "
  947.                 BYTE003 = (InStr(STRING029, STRING022) == 1)
  948.                 BOOLEAN016 = ((Len(STRING022) >= BYTE009) && (InStr(STRING029, STRING022) > 0))
  949.             Else
  950.                 BOOLEAN016 = (Len(STRING022) >= BYTE009)
  951.             Endif
  952.         Else
  953.             Select Case (BYTE006)
  954.                 Case 4, 5
  955.                     InputDate STRING011, STRING022, BYTE019
  956.                     DATE002 = STRING022
  957.                     STRING022 = DATE002
  958.                     BOOLEAN016 = ValDate(STRING022)
  959.                     If (STRING027 <> "") Then
  960.                         BOOLEAN016 = 1
  961.                     ElseIf (BOOLEAN016 && (BYTE006 == 5)) Then
  962.                         Gosub LABEL018
  963.                         Gosub LABEL021
  964.                         If (!BOOLEAN021) BOOLEAN016 = BOOLEAN016 && (InStr(STRING018, STRING032) > 0)
  965.                         BYTE003 = BOOLEAN016
  966.                         BOOLEAN016 = 1
  967.                     Endif
  968.                 Case 6
  969.                     InputCC STRING011, STRING022, BYTE019
  970.                     BOOLEAN016 = FmtCC(BOOLEAN016)
  971.                     BOOLEAN016 = ValCC(STRING022)
  972.                 Case 7
  973.                     InputInt STRING011, STRING022, BYTE019
  974.                     TINTEGER006(BYTE007) = STRING022
  975.                     BYTE003 = ((TINTEGER006(BYTE007) >= BYTE009) && (TINTEGER006(BYTE007) <= BYTE010))
  976.                     BOOLEAN016 = (BYTE003 || !BOOLEAN021)
  977.                 Case 8
  978.                     InputYN STRING011, STRING022, BYTE019
  979.                     BOOLEAN016 = (InStr(YesChar() + NoChar(), STRING022) > 0)
  980.                     BYTE003 = (STRING022 == YesChar())
  981.                 Case 9
  982.                     InputInt STRING011, STRING022, BYTE019
  983.                     BYTE003 = (STRING022 == BYTE012)
  984.                     BOOLEAN016 = ((STRING022 > 0) || !BOOLEAN021)
  985.                 Case 10
  986.                     If (STRING035 == "") Then
  987.                         PromptStr 707, STRING022, BYTE010, STRING029, INTEGER005
  988.                         Goto LABEL029
  989.                     Endif
  990.                     InputStr STRING011, STRING022, BYTE019, BYTE010, STRING029, INTEGER005
  991.                     :LABEL029
  992.                     BYTE003 = (STRING022 == U_Ver)
  993.                     BOOLEAN016 = ((Len(STRING022) >= BYTE009) || !BOOLEAN021)
  994.                 Endif
  995.         End Select
  996.         If (BYTE006 > 3) Newline
  997.         If ((STRING022 == "?") && (STRING045 <> "")) Then
  998.             BOOLEAN016 = 0
  999.             DispFile STRING045, 4 + 2 + 1
  1000.         ElseIf (((STRING022 == "") && (BYTE009 > 0)) && (BYTE006 <> 7)) Then
  1001.             BOOLEAN016 = 0
  1002.             Inc BYTE004
  1003.             If (BYTE004 < BYTE013) DispText 117, 2048 + 64
  1004.         Else
  1005.             If (BOOLEAN016) Goto LABEL030
  1006.             Inc BYTE004
  1007.             If (BYTE004 < BYTE013) DispText 56, 2048 + 64
  1008.         Endif
  1009.         :LABEL030
  1010.         If (BYTE004 == BYTE013) Then
  1011.             Color 12
  1012.             Print "Attempt to answer has"
  1013.             DispText 577, 2048 + 64
  1014.         Endif
  1015.         If (BOOLEAN010) Newline
  1016.     EndWhile
  1017.     DefColor
  1018.     If (BOOLEAN003 && !BOOLEAN022) FPut BYTE002, "A: "
  1019.     If ((BYTE024 > 0) && !BOOLEAN022) FPut BYTE024, "A: "
  1020.     If (BOOLEAN016) Then
  1021.         If (!BOOLEAN022) FPutLn BYTE002, STRING022
  1022.         If ((BYTE024 > 0) && !BOOLEAN022) FPutLn BYTE024, STRING022
  1023.     Else
  1024.         If (!BOOLEAN022) FPutLn BYTE002, "[NO ANSWER]"
  1025.         If ((BYTE024 > 0) && !BOOLEAN022) FPutLn BYTE024, "[NO ANSWER]"
  1026.         BOOLEAN020 = 1
  1027.         Inc INT009
  1028.     Endif
  1029.     Return
  1030.     :LABEL031
  1031.     FAppend BYTE002, STRING027, 2, 3
  1032.     STRING027 = Space(62)
  1033.     FPutLn BYTE002, Replace(STRING027, " ", "*")
  1034.     FPut BYTE002, "From: ", U_Name(), ", "
  1035.     FPut BYTE002, Date(), " (", Left(Time(), 5)
  1036.     If (PcbNode() > 0) FPut BYTE002, ") Node ", PcbNode()
  1037.     FPutLn BYTE002, " Sec ", U_Sec, " Exp ", U_ExpDate
  1038.     Return
  1039.     :LABEL032
  1040.     BYTE003 = 0
  1041.     STRING048 = CallId()
  1042.     If (STRING048 == "") Return
  1043.     If (BYTE025 == 0) Then
  1044.         BYTE025 = InStr(STRING048, STRING049)
  1045.         If (BYTE025 == 0) Return
  1046.         BYTE026 = Len(STRING049)
  1047.     Endif
  1048.     INT006 = BYTE025 + BYTE026
  1049.     If (BOOLEAN014) Then
  1050.         Gosub LABEL033
  1051.     Else
  1052.         STRING027 = Mid(STRING048, INT006, 10)
  1053.     Endif
  1054.     STRING053 = Upper(Trim(Left(STRING027, 10), " "))
  1055.     Select Case (STRING053)
  1056.         Case STRING050
  1057.             STRING021 = STRING046
  1058.             Return
  1059.         Case STRING051
  1060.             STRING021 = STRING047
  1061.             Return
  1062.         Case 10
  1063.             Return
  1064.     End Select
  1065.     STRING022 = Left(STRING053, 3) + "-" + Mid(STRING053, 4, 3) + "-" + Right(STRING053, 4)
  1066.     Gosub LABEL015
  1067.     Gosub LABEL012
  1068.     If (((STRING052 <> "") && ((BOOLEAN016 == 1) && BYTE003)) || ((BOOLEAN016 == 0) && !BYTE003)) Then
  1069.         FAppend 6, STRING052, 2, 3
  1070.         FPutLn 6, STRING054, STRING022, STRING055, RTrim(U_Name(), " "), STRING055, Date(), " (PPE-SCR)", STRING054
  1071.         FClose 6
  1072.     Endif
  1073.     BYTE003 = 1
  1074.     Return
  1075.     :LABEL033
  1076.     STRING027 = ""
  1077.     INT006 = INT006 + 2
  1078.     BYTE027 = S2I(Mid(STRING048, INT006, 2), 16)
  1079.     While (BYTE027 > 0) Do
  1080.         INT006 = INT006 + 2
  1081.         STRING027 = STRING027 + Chr(S2I(Mid(STRING048, INT006, 2), 16))
  1082.         Dec BYTE027
  1083.     EndWhile
  1084.     Return
  1085.  
  1086. ;------------------------------------------------------------------------------
  1087. ;
  1088. ; Usage report (before postprocessing)
  1089. ;
  1090. ; ■ Statements used :
  1091. ;
  1092. ;    1       End
  1093. ;    6       Color 
  1094. ;    286     Goto 
  1095. ;    338     Let 
  1096. ;    12      Print 
  1097. ;    12      PrintLn 
  1098. ;    231     If 
  1099. ;    2       ConfFlag 
  1100. ;    3       DispFile 
  1101. ;    3       FOpen 
  1102. ;    3       FAppend 
  1103. ;    8       FClose 
  1104. ;    20      FGet 
  1105. ;    7       FPut 
  1106. ;    10      FPutLn 
  1107. ;    2       ResetDisp
  1108. ;    1       GetUser
  1109. ;    1       PutUser
  1110. ;    1       DefColor
  1111. ;    1       Delete 
  1112. ;    1       AdjTime 
  1113. ;    8       Log 
  1114. ;    2       InputStr 
  1115. ;    2       InputYN 
  1116. ;    2       InputInt 
  1117. ;    1       InputCC 
  1118. ;    1       InputDate 
  1119. ;    42      Gosub 
  1120. ;    23      Return
  1121. ;    1       PromptStr 
  1122. ;    1       Delay 
  1123. ;    7       Inc 
  1124. ;    2       Dec 
  1125. ;    11      Newline
  1126. ;    9       Tokenize 
  1127. ;    30      GetToken 
  1128. ;    1       Shell 
  1129. ;    3       DispText 
  1130. ;    5       Stop
  1131. ;    1       Call 
  1132. ;    3       DispStr 
  1133. ;    1       WrUSys
  1134. ;    1       RdUSys
  1135. ;    1       Message 
  1136. ;    1       FSeek 
  1137. ;    1       LastIn 
  1138. ;    1       AdjDBytes 
  1139. ;    1       AdjTBytes 
  1140. ;    1       AdjTFiles 
  1141. ;
  1142. ;
  1143. ; ■ Functions used :
  1144. ;
  1145. ;    12      -
  1146. ;    4       *
  1147. ;    1       /
  1148. ;    1       %
  1149. ;    79      +
  1150. ;    35      -
  1151. ;    136     ==
  1152. ;    32      <>
  1153. ;    13      <
  1154. ;    16      <=
  1155. ;    34      >
  1156. ;    22      >=
  1157. ;    193     !
  1158. ;    47      &&
  1159. ;    16      ||
  1160. ;    16      Len(
  1161. ;    22      Upper()
  1162. ;    35      Mid()
  1163. ;    21      Left()
  1164. ;    13      Right()
  1165. ;    3       Space()
  1166. ;    9       Chr()
  1167. ;    3       Asc()
  1168. ;    12      InStr()
  1169. ;    3       RTrim()
  1170. ;    2       Trim()
  1171. ;    4       Date()
  1172. ;    1       Time()
  1173. ;    4       U_Name()
  1174. ;    2       U_Logons()
  1175. ;    1       U_Fdl()
  1176. ;    1       U_BdlDay()
  1177. ;    1       U_Bdl()
  1178. ;    1       Year()
  1179. ;    2       NoChar()
  1180. ;    3       YesChar()
  1181. ;    1       StripAtx()
  1182. ;    14      Replace()
  1183. ;    33      Strip()
  1184. ;    2       String()
  1185. ;    1       Mask_Alpha()
  1186. ;    4       Mask_Num()
  1187. ;    2       Mask_Ascii()
  1188. ;    4       PPEPath()
  1189. ;    1       ValDate()
  1190. ;    2       PcbNode()
  1191. ;    1       ReadLine()
  1192. ;    2       CurSec()
  1193. ;    38      GetToken()
  1194. ;    1       CallId()
  1195. ;    10      Exist()
  1196. ;    4       S2I()
  1197. ;    2       LangExt()
  1198. ;    2       AnsiOn()
  1199. ;    1       ValCC()
  1200. ;    1       FmtCC()
  1201. ;    2       And()
  1202. ;    1       Or()
  1203. ;    1       XOr()
  1204. ;    5       DefColor()
  1205. ;    1       PPEName()
  1206. ;    1       LastAns()
  1207. ;    1       EvtTimeAdj()
  1208. ;
  1209. ;------------------------------------------------------------------------------
  1210. ;
  1211. ; Analysis flags : FWASCaH
  1212. ;
  1213. ; F - Change conference flags status ■ 2
  1214. ;     This may be normal for a SELECT replacement but it may also be
  1215. ;     a way to get access to conferences a user is not allowed to.
  1216. ;     ■ Search for : CONFFLAG, CONFUNFLAG
  1217. ;
  1218. ; W - Write user ■ 5
  1219. ;     Program writes a user record. Although this may be normal for a
  1220. ;     User Editor, it may also be a way to modify an account level.
  1221. ;     ■ Search for : PUTUSER
  1222. ;
  1223. ; A - Adjust online time remaining ■ 5
  1224. ;     Program modify the amount of online time remaining, this may
  1225. ;     be a way to bypass time limits
  1226. ;     ■ Search for : ADJTIME
  1227. ;
  1228. ; S - Shell to DOS ■ 5
  1229. ;     This may be normal if the PPE need to execute an external command,
  1230. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  1231. ;     or usefull (sorting, maintenance,...). Check!
  1232. ;     ■ Search for : SHELL
  1233. ;
  1234. ; C - Call child PPE ■ 3
  1235. ;     This is usually normal, but may be a tricky way to launch some
  1236. ;     sysop-only commands.
  1237. ;     ■ Search for : CALL
  1238. ;
  1239. ; a - Adjust ratio ■ 4
  1240. ;     User's ratio is adjusted by changing the amount of files/bytes
  1241. ;     uploaded. This may be normal for a user editor.
  1242. ;     ■ Search for : ADJBYTES, ADJDBYTES, ADJTBYTES, ADJTFILES
  1243. ;
  1244. ; H - Read Password or Password History ■ 5
  1245. ;     Program is reading the user's password or last password history
  1246. ;     This may be ok for a password manager, but it is very suspect. Check!
  1247. ;     ■ Search for : U_PWDHIST, U_PWD
  1248. ;
  1249. ;------------------------------------------------------------------------------
  1250. ;
  1251. ; Postprocessing report
  1252. ;
  1253. ;    4       For/Next
  1254. ;    6       While/EndWhile
  1255. ;    86      If/Then or If/Then/Else
  1256. ;    10      Select Case
  1257. ;
  1258. ;------------------------------------------------------------------------------
  1259. ;                 AEGiS Corp - Break the routines, code against the machines!
  1260. ;------------------------------------------------------------------------------
  1261.